home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / compuserve-file-archive / 08 System Utilities / FSEARC.SRC < prev    next >
Text File  |  2019-04-13  |  4KB  |  205 lines

  1. ; FSEARCH.SRC    ├128 40/80
  2. ;   DOUG ZIMMER  10/6/89
  3. ;
  4. .ORG $2B00  ; ABOVE ┬┴╙╔├ PROGRAM
  5. ; VIEW:
  6. ;  ENTIRE FILE      - SYS DEC($2B00),0
  7. ;  START AT STRING1 - SYS DEC($2B00),1
  8. ;  START AT STRING1, STOP
  9. ;   AFTER STRING2   - SYS DEC($2B00),2
  10. ; PRINT:
  11. ;  ENTIRE FILE      - SYS DEC($2B00),3
  12. ;  START AT STRING1 - SYS DEC($2B00),4
  13. ;  START AT STRING1, STOP
  14. ;   AFTER STRING2   - SYS DEC($2B00),5
  15. ;
  16. ;DIS
  17. ;
  18. STRING1 = *+$200  ; 1ST BYTE IS LENGTH
  19. STRING2 = *+$281
  20. ;STRINGS ARE 128 CHARS. MAX.
  21. ;
  22. .LST "KERNAL128.TBL"
  23. ;OBJ "@0:FSEARCH.OBJ"
  24. ;
  25. STA MODE
  26. ;
  27. LDX #$0F          ; SET BANK CONFIG. 15
  28. JSR $FF6B
  29.       
  30. STA $FF00
  31. ;
  32. LDA MODE
  33. BEQ VF'JUMP       ; VIEW ALL IF 0,
  34. CMP #3            ;  PRINT ALL IF 3,
  35. BEQ PF'JUMP       ;  OTHERWISE SEARCH
  36. JMP SEARCH
  37. ;
  38. VF'JUMP = *
  39. JMP VIEW'FILE
  40. PF'JUMP = *
  41. SEI
  42. JMP PRINT'FILE
  43. ;
  44. SEARCH = *
  45. JSR CLRCH
  46. LDX #1
  47. JSR CHKIN         ; SET INFILE=1
  48. NEW'SEARCH1 = *
  49. LDY #0            ; RESET COUNTER
  50. READ'CMP1 = *
  51. INY               ; NEXT CHAR IN STRING
  52. JSR STOP          ; STOP KEY CHECK
  53. BNE +
  54. JMP V'EXIT
  55. + JSR BASIN       ; GET CHAR FROM FILE
  56. LDX $90           ; END OF FILE CHECK
  57. BEQ +
  58. JMP V'EXIT
  59. + CMP STRING1,Y   ; IF NO MATCH, GO TO
  60. BNE NEW'SEARCH1   ;  1ST CHAR IN STRING
  61. TYA
  62. CMP STRING1       ; END OF STRING?
  63. BNE READ'CMP1
  64. ;
  65. PRINT'STRING1 = *
  66. LDY #0            ; RESET COUNTER
  67. JSR CLRCH
  68. LDA MODE
  69. CMP #1
  70. BEQ PRT'CHAR
  71. CMP #2
  72. BEQ PRT'CHAR
  73. SEI               ; DISABLE INTERRUPTS
  74. LDX #4            ; PRINTER OUTPUT
  75. JSR CKOUT
  76. LDA #13           ; PRINT 2 RETURNS
  77. JSR BSOUT
  78. LDA #13
  79. JSR BSOUT
  80. PRT'CHAR = *
  81. INY               ; NEXT CHAR IN STRING
  82. LDA STRING1,Y
  83. JSR BSOUT         ; PRINT IT
  84. TYA
  85. CMP STRING1       ; END OF STRING?
  86. BNE PRT'CHAR
  87. LDA MODE
  88. CMP #1
  89. BEQ VF'JUMP       ; VIEW REST OF FILE
  90. CMP #4
  91. BEQ PF'JUMP       ; PRINT REST OF FILE
  92. CMP #5
  93. BEQ NEW'PSEARCH2  ; PRINT THRU STRING2
  94. JSR CLRCH
  95. LDX #1
  96. JSR CHKIN
  97. ;
  98. NEW'VSEARCH2 = *
  99. LDY #0            ; RESET COUNTER
  100. VREAD'CMP2 = *
  101. INY               ; NEXT CHAR IN STRING
  102. JSR STOP          ; STOP KEY CHECK
  103. BNE +
  104. JMP V'EXIT
  105. + JSR BASIN       ; GET CHAR FROM FILE
  106. JSR BSOUT         ; PRINT CHAR
  107. LDX $90           ; END OF FILE CHECK
  108. BEQ +
  109. JMP V'EXIT
  110. + CMP STRING2,Y   ; IF NO MATCH, GO TO
  111. BNE NEW'VSEARCH2  ;  1ST CHAR IN STRING
  112. TYA
  113. CMP STRING2       ; END OF STRING?
  114. BNE VREAD'CMP2
  115. JMP V'EXIT
  116. ;
  117. NEW'PSEARCH2 = *
  118. LDY #0 ; RESET COUNTER
  119. PREAD'CMP2 = *
  120. INY               ; NEXT CHAR IN STRING
  121. JSR CLRCH
  122. LDX #1
  123. JSR CHKIN         ; SET INFILE=1
  124. JSR STOP          ; STOP KEY CHECK
  125. BNE +
  126. JMP P'EXIT
  127. + JSR BASIN       ; GET CHAR FROM FILE
  128. STA CHAR          ; STORE IT
  129. LDX $90           ; END OF FILE CHECK
  130. BEQ +
  131. JSR CLRCH
  132. LDX #4
  133. JSR CKOUT         ; SET OUTFILE=4
  134. LDA CHAR
  135. JSR BSOUT         ; PRINT LAST CHAR
  136. JMP P'EXIT
  137. + JSR CLRCH
  138. LDX #4
  139. JSR CKOUT         ; SET OUTFILE=4
  140. LDA CHAR
  141. JSR BSOUT         ; PRINT CHAR
  142. CMP STRING2,Y     ; IF NO MATCH, GO TO
  143. BNE NEW'PSEARCH2  ;  1ST CHAR IN STRING
  144. TYA
  145. CMP STRING2       ; END OF STRING?
  146. BNE PREAD'CMP2
  147. JMP P'EXIT
  148. ;
  149. VIEW'FILE = *
  150. JSR CLRCH
  151. LDX #1
  152. JSR CHKIN         ; SET INFILE=1
  153. - JSR STOP        ; STOP KEY CHECK
  154. BNE +
  155. JMP V'EXIT
  156. + JSR BASIN       ; GET CHAR FROM FILE
  157. JSR BSOUT         ; PRINT CHAR
  158. LDY $90           ; END OF FILE CHECK
  159. BEQ -
  160. JMP V'EXIT
  161. ;
  162. PRINT'FILE = *
  163. JSR CLRCH
  164. LDX #1
  165. JSR CHKIN         ; SET INFILE=1
  166. JSR STOP          ; STOP KEY CHECK
  167. BNE +
  168. JMP P'EXIT
  169. + JSR BASIN       ; GET CHAR FROM FILE
  170. STA CHAR          ; STORE IT
  171. LDX $90           ; END OF FILE CHECK
  172. BEQ +
  173. JSR CLRCH
  174. LDX #4
  175. JSR CKOUT         ; SET OUTFILE=4
  176. LDA CHAR
  177. JSR BSOUT         ; PRINT LAST CHAR
  178. JMP P'EXIT
  179. + JSR CLRCH
  180. LDX #4
  181. JSR CKOUT         ; SET OUTFILE=4
  182. LDA CHAR
  183. JSR BSOUT         ; PRINT CHAR
  184. JMP PRINT'FILE
  185. ;
  186. V'EXIT = *
  187. CLI               ; DISABLE INTERRUPTS
  188. JMP CLRCH         ; RETURN TO ┬┴╙╔├
  189. ;
  190. P'EXIT = *
  191. JSR CLRCH
  192. LDX #4
  193. JSR CKOUT         ; SET OUTFILE=4
  194. LDA #13           ; PRINT 2 RETURNS
  195. JSR BSOUT
  196. LDA #13
  197. JSR BSOUT
  198. CLI               ; DISABLE INTERRUPTS
  199. JMP CLRCH         ; RETURN TO ┬┴╙╔├
  200. ;
  201. MODE = *
  202. CHAR = *+1
  203. ;DIS
  204. ;
  205.